참조에 의한 전달

객체는 프로퍼티의 개수가 정해져 있지 않으며, 동적으로 추가되고 삭제할 수 있다. 또랗 늪로퍼티의 값에도 제약이 없다. 따라서 객체는 원시 값과 같이 확보해야 할 메모리 공간의 크기를 사전에 정해 둘 수 없다.

이러한 객체의 가변성의 성질 떄문에 객체를 할당한 변수가 기억하는 메모리 주소를 통해 메모리 공간에 접근하면 참조 값에 접근 할 수 있다. 참조 값은 생성된 객체가 저장된 메모리 공간의 주소 그 자체이다.

var person = {
  name: 'Lee',
};

// 참조값을 복사(얕은 복사)
var copy = person;

Pasted image 20241110013445.jpg

var person안에 name : lee를 넣었을대 person이 가르키고있는 메모리 주소에는 객체의 값이 담겨있는 메모리 주소를 담고있으며 이 person을 복사하여 copy변수에 넣었을때 같은 메모리 주소를 복사하여 전달하기때문에 객체의 프로퍼티를 수정할경우 person , copy의 값 둘다 변경되게 된다.

var person = {
  name: "John Doe",
};

var copy = person;

console.log(copy === person); // true
console.log(copy.name === person.name); // true

같이 보면 좋은 자료 : 값에 의한 전달